In recent years, there have been great advancements in the speed, power, and complexity of integrated circuits, such as application specific integrated circuit (ASIC) chips, random access memory (RAM) chips, microprocessor (uP) chips, and the like. These advancements have made possible the development of system-on-a-chip (SOC) devices. An SOC device integrates into a single chip many of the components of a complex electronic system, such as a wireless receiver (i.e., cell phone, a television receiver, and the like). SOC devices greatly reduce the size, cost, and power consumption of the system.
SOC data processors are characterized by a very high degree of integration on a single integrated circuit (IC) chip. Many of the peripheral components now integrated onto the same IC chip as a processor core would have been implemented as separate IC chips in a previous generation of processors. Advantageously, this decreases the amount of board space required, reduces the effects of noise, allows for low-voltage operations, and, in many cases, reduces the pin count of the SOC device.
Most data processors use one or more read-only memory (ROM) circuits to store data and instructions. Quite often, the ROMs circuits are implemented on the processor as a custom ROM design. The benefits to a custom ROM design are reduced area, speed, and the ability to make changes to the ROM. However, custom ROM has significant disadvantages, including the time required to implement the custom ROM.
An alternative to using a custom ROM is to use a synthesized ROM. Synthesized ROMs are easier to implement and allow for a faster time to market. However, a synthesized ROM also has significant disadvantages. It is very difficult to fix an error (or bug) in the code stored in a synthesized ROM after tape out without re-synthesizing and re-fabricating the synthesized ROM. This is an extremely expensive process.
Therefore, there is a need in the art for improved data processor and other large-scale integrated circuits that contain read-only memory (ROM) circuits. In particular, there is a need for improved ROM circuits in which ROM code errors may be patched easily and without re-synthesizing the entire ROM circuit.